import { Service } from './index';
import { ElMessage as Message } from 'element-plus'; 
import { useTokenStore } from '@/stores/token'; // 导入 Pinia 的 token store
class AdminUserService extends Service {
     // 使用 Pinia 的 token store
    // constructor() {
    //   super();
    //    // 使用 Pinia 的 token store
    // // 使用 Pinia 的 token store
    //   //this.tokenStore = useTokenStore(); // 使用 Pinia 的 token store
    // }


    //列表
    getList = (data) => { 
      return this.get('/adminUser', data).then(response => {
        return response.data.data; // 返回数据部分
      }).catch(error => {
        // 添加错误处理，确保 this.Message.error 可以调用
        if (error.response && error.response.data.data && error.response.data.data.message) {
          Message.error(error.response.data.message); // 修改为 this.Message
        }
      });
    }

    //删除
    del= (id) => {
      return this.delete(`/adminUser/${id}`);
    } 

    /**
     * 更新管理员用户信息
     * 
     * 此函数通过发送PUT请求来更新指定管理员用户的信息
     * 它需要两个参数：管理员用户的ID和包含更新信息的数据对象
     * 如果更新成功，它将返回更新后的管理员用户信息
     * 如果更新失败，它将尝试发送错误消息进行错误处理
     * 
     * @param {string} id - 管理员用户的唯一标识符
     * @param {object} data - 包含要更新的管理员用户信息的对象
     * @returns {Promise} - 返回一个Promise对象，包含更新后的管理员用户信息
     */
    updateAdmin = (id, data) => {
      // 发送PUT请求以更新管理员用户信息
      return this.put(`/adminUser/${id}`, data);
    }

    addAdmin = (data) => {
      return this.post('/adminUser', data);
    }

    login = (data) =>{
     // const useTokenStore = useTokenStore();
      return this.post('/login', data).then(response => {
        console.log(response);
        // 确保 this 指向 Vue 实例
        Message.success(response.data.message); // 修改为 this.Message
        if (response.data.data.token) {
          //useTokenStore.setToken(response.data.data.token); // 使用 Pinia 的 token store
          localStorage.setItem('token', response.data.data.token);
        }
        return response;
      }).catch(error => {
        // 添加错误处理，确保 this.Message.error 可以调用
        if (error.response && error.response.data.data && error.response.data.data.message) {
          Message.error(error.response.data.message); // 修改为 this.Message
        }
      });
    }
  
    logOut = () => {
      //const useTokenStore = useTokenStore();
      return this.post('/logout').then(response => {
        console.log(response);
        //useTokenStore.clearToken(); // 清除 Pinia 中的 token
        localStorage.removeItem('token');
        return response;
      }).catch(error => {
        if (error.response && error.response.data.data && error.response.data.data.message) {
          Message.error(error.response.data.message); // 修改为 this.Message
        }
      });
    }

    details = (id) =>{
      return this.get(`/adminUser/${id}`)
    }
}
  
const adminUserService = new AdminUserService();
  
export { adminUserService };